#ifndef __BSP_GPIO_H
#define __BSP_GPIO_H
#include "imx6ul.h"

typedef enum
{
    kGPIO_DigitalInput,              /*输入   枚举类型默认是从0开始的*/
    kGPIO_DigitalOutput,             /*输出*/
}gpio_pin_direction_t;                  //表示GPIO输入和输出的方向的枚举类型    

/**
 * GPIO中断触发类型枚举 
 */
typedef enum
{
    kGPIO_NoIntMode,                 /*无中断功能*/
    kGPIO_IntLowLevel,               /*低电平中断*/
    kGPIO_IntHighLevel,              /*高点平中断*/
    kGPIO_IntRisingEdge,             /*上升沿触发*/
    kGPIO_IntFallingEdge,            /*下降沿触发*/
    kGPIO_IntRisingOrFallingEdge,    /*上升沿和下降沿都触发*/    
}gpio_interrupt_mode_t;

typedef struct 
{
    gpio_pin_direction_t direction;         /*gpio方向*/
    uint8_t outputLogic;                    /*输出电平 */
    gpio_interrupt_mode_t interruptMode;    /*中断方式*/
}gpio_pin_config_t;

void gpio_init(GPIO_Type * base,int pin,gpio_pin_config_t * config);
int gpio_pinread(GPIO_Type * base,int pin);         //GPIO_Type这个是一个关于GPIO的结构体定义
void gpio_pinwrite(GPIO_Type * base,int pin,int value);
void gpio_intconfig(GPIO_Type * base,int pin,gpio_interrupt_mode_t pinInterruptMode); 
void gpio_enableint(GPIO_Type * base,int pin);
void gpio_disableint(GPIO_Type * base,int pin);
void gpio_clearintflags(GPIO_Type * base,int pin);

#endif //__BSP_GPIO_H



/*干一见事情之前,得充分考虑当前及今后的敌我双方实力的对比   有充分的实力时才做,否则别做*/